home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / scope / 201-220 / scopedisk215 / polysilicon / silicon.doc < prev    next >
Text File  |  1995-03-19  |  52KB  |  1,074 lines

  1.  
  2.  
  3.  
  4.  
  5.                          Sili(CON:) User Manual
  6.                          ======================
  7.  
  8.  
  9.                     -- Copyright 1991 Pete Goodeve --
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16. Concept
  17. =======
  18.  
  19. In recent years there has been a pronounced trend toward the "Graphic User
  20. Interface" (GUI).  In fact at times the trend has seemed more like a
  21. headlong rush.  Despite this, experienced users seem likely to stick to the
  22. Command Line form of interaction for a lot of their work.  This is partly a
  23. simple reluctance to change, probably, but in many ways a command language
  24. is plain more flexible and convenient.  How often do you give a person
  25. instructions solely by pointing and clicking your fingers?  Or by showing
  26. them pre-drawn pictures?
  27.  
  28. What would seem to be needed is an approach that combines the convenience
  29. of point-and-click with the flexibility of text commands. This is exactly
  30. the intent of Sili(CON:).   Commands, once typed in, remain available for
  31. recall and re-execution by mouse click, and one common window acts as a
  32. convenient central control point for all the Shell processes that you have
  33. running (hence "Poly" Sili(CON:)).  A Shell under Sili(CON:)'s control, by
  34. the way, is (normally) a standard AmigaDOS Shell, so all the usual commands
  35. and facilities are available.
  36.  
  37. In typical usage, you find that you are entering the same -- or minor
  38. variations of the same -- commands repeatedly, sometimes in the same cyclic
  39. order, sometimes not.  With the AmigaDOS Shell, you can step back through
  40. the history to recall previous commands, but this becomes tedious
  41. especially when the command is more than a few lines back. Sili(CON:)
  42. provides a VISIBLE History list in its window (with a scrollbar): recalling
  43. a wanted line is just a matter of clicking on it with the mouse; a double
  44. click re-executes it directly.  A single click brings the line back into
  45. the editing gadget for possible modification; this area is an enhanced
  46. String Gadget with all the standard Shell editing options (ctrl-U and
  47. ctrl-K etc.) plus a few extras like cursor-to-next-space.
  48.  
  49. If you use a particular set of commands repeatedly over a number of
  50. sessions, you can store them in a file that can be copied straight into the
  51. history list (at startup or any time later) ready for immediate selection.
  52.  
  53. Another important Sili(CON:) policy is to separate the Command Area from
  54. the Display windows for each process.  You can have as many Shell processes
  55. as you like (within reason!) connected to Sili(CON:) channels, and they
  56. all receive their commands from the single Sili(CON:) window.  When first
  57. entered, a command is directed to the channel currently selected as active;
  58. any re-invocation of that line goes automatically to the same channel
  59. (whatever the selcted default at that time) unless specifically redirected.
  60. Both the command and any resulting program output are of course displayed
  61. in the associated Shell window as usual.
  62.  
  63. One notable consequence of this scheme is that the execution of programs
  64. doesn't interfere with the entry of commands.  Not only can you type in the
  65. command text at any time, however many programs are executing, but you can
  66. transmit it to its Shell.  It will be queued to be executed when that Shell
  67. finishes all the jobs preceding it.
  68.  
  69. As well as letting you use the mouse to save typing, Sili(CON:) conversely
  70. often lets you keep your hands on the keyboard where otherwise you would
  71. need to use the mouse: switching between shells is a matter of a single
  72. keystroke -- no need to move your hand to the mouse and click in that
  73. window.  Of course you have menu selection of the active shell, too, if
  74. that happens to be more convenient.
  75.  
  76. With the full package (Licensed Shareware -- see the end of this manual)
  77. you can actually connect ANY program that accepts text lines as input to
  78. Sili(CON:).  This could be an ARexx script, for instance, set up to read an
  79. `IP:' device channel. (Sili(CON:) doesn't have an ARexx port of its own;
  80. this approach provides all the convenience of such a port without any extra
  81. overhead.)
  82.  
  83. Sili(CON:)'s history list can be manipulated in ways that are not common in
  84. such mechanisms.  For one thing, you can delete unwanted items, so the
  85. visible area doesn't get cluttered with mistyped commands and so on.  You
  86. can also gather all the lines associated with one channel together at the
  87. front of the list, or just wipe them all to start afresh on that channel.
  88. Up and down arrows also operate to move you through the history as you
  89. would expect, of course.  All functions (except a couple of "critical"
  90. ones, like `QUIT') can be performed from the keyboard rather than the mouse
  91. if it is more convenient at that point.
  92.  
  93. The final important underpinning of Sili(CON:) is its modularity, based on
  94. the ppIPC communication mechanism.  Components are kept small by doing only
  95. what they need to, communicating with other components for their distinct
  96. specialities.  Sili(CON:) itself, for instance, accepts no command line
  97. options for setting window configuration and so on.  Instead there is a
  98. module `SiliConfig' (in the Licensed Shareware package only) that accepts
  99. and parses command lines -- or configuration files -- and sends compact
  100. IPCMessages to Sili(CON:) to implement the requests.  The ppIPC interface
  101. is fully documented (in the printed Licensed documentation only), so that
  102. others can write their own utilities to work with this system.
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109. Requirements and Components
  110. ===========================
  111.  
  112. Sili(CON:) will run on any Amiga with AmigaDOS 1.3 or 2.0.  (It may also
  113. behave properly under 1.2, but this has not been checked.)
  114.  
  115. Some software components other than the SiliCon program itself are needed
  116. for the system to work; they are all included with this package, and the
  117. easiest way to install them is with the automatic installation program
  118. also included. The InterProcess Communications library `ppipc.library' must
  119. be available in LIBS: and the IPC pipe device `IP:' (`IP-Handler') must be
  120. installed in L: and mounted; this means too, of course that this must have
  121. an entry in DEVS:MountList.  Both the above are general purpose modules --
  122. not restricted to functioning with Sili(CON:).
  123.  
  124. Sili(CON:) itself has two essential components: the `SiliCon' program that
  125. provides the main Control and History window, and `InShell', which links
  126. this to the Shell processes that you want to control.  In addition, you
  127. will want some scripts in your path (usually in the `S:' directory) for
  128. convenient opening of new Shell windows and so on.  Basic ones are supplied
  129. in this package, but you may want to tailor them or create your own.
  130.  
  131. With the Licensed Shareware package (obtained by sending in the requested
  132. contribution -- see the end of this manual) you get three more utility
  133. programs: SiliConfig, SiliDump, and SiLink.
  134.  
  135. SiliConfig lets you configure the window and history under program control.
  136.  
  137. SiliDump creates a configuration file from the current state and contents
  138. of the window -- and also provides a mechanism for "circulating" individual
  139. command lines from older parts of the history to the front.
  140.  
  141. SiLink allows you to make connections to processes other than Shell
  142. windows (and has some other subsidiary convenience functions).  Any program
  143. that accepts lines of text as input can be connected to Sili(CON:) -- via
  144. an `IP:' channel (or even a suitable direct IPCPort) -- provided that
  145. Sili(CON:) is instructed to open that channel.  InShell does this
  146. automatically for itself, of course, but SiLink is the command-line-driven
  147. equivalent for other occasions.
  148.  
  149.  
  150.  
  151.  
  152.  
  153.  
  154. Compatibility
  155. =============
  156.  
  157. Sili(CON:) was written to function with the standard AmigaDOS Shell and
  158. CLI. It has not been tested with other shells, but if they use standard
  159. Console (not `RAW:') Input for their commands it will probably work with
  160. them also. (I would be interested in any experiences in this area.)
  161.  
  162. It should be compatible with any program that runs under the CLI or Shell.
  163. If a program itself requires standard console input, this can come from
  164. either Sili(CON:) or the Shell window it is running in (by redirection, as
  165. explained in `Keyboard Input to Programs').  In fact you can use a Shell
  166. window's own (Console) history, separate from Sili(CON:)'s, for program
  167. input, if you wish.  If a program takes raw keystrokes as input (`more' for
  168. example) it must come from the Shell window rather than Sili(CON:).
  169.  
  170. Many -- probably most -- utilities work well with Sili(CON:).  No real
  171. incompatibilities have yet been found.  If you have any problems please
  172. let me know.
  173.  
  174.  
  175.  
  176.  
  177.  
  178. System Installation
  179. ===================
  180.  
  181. For most people, the most convenient way of installing the system will be
  182. simply to use the supplied `Install SiliCon' icon.  Double-clicking on this
  183. initiates a complete installation sequence, with your permission being
  184. asked each time before any change is made to your disk.  The following
  185. paragraphs detail the steps involved, so that you can see what the
  186. installation program is doing, or so that you can do the installation
  187. manually if you prefer.
  188.  
  189. One option in the automatic sequence is to do a trial installation.  This
  190. makes NO changes to your disk, loading everything it needs from the
  191. installation directory, and putting pieces that may be needed later into a
  192. RAM: directory.  To try it this way, just click `Yes' in the first
  193. requester presented to you; in a few moments the Sili(CON:) window and an
  194. attached shell should appear; you can use `NewSili' to attach more shells.
  195. This is a fully functional copy of the program, and you can try out all its
  196. features.  To perform a full install instead, just click on the `Install'
  197. gadget of the requester, rather than `Yes'.
  198.  
  199. The full automatic installation sequence assumes that your environment is
  200. fairly standard.  DOS commands should be the 1.3 or 2.0 standard ones and
  201. have standard names, so that the script can use them.  There must be
  202. sufficient room in your system directories, particularly in the C:
  203. directory, to hold the required additions -- a total of about 30K is needed
  204. for the Freely Distributable package, 20K more for the licensed extras.
  205. See the previous Requirements and Components section (and below) for
  206. details of the pieces to be installed.
  207.  
  208. The installation sequence begins at the `foundation level' and works up.
  209. First, `ppipc.library' is placed in `LIBS:', then `IP-handler' is copied to
  210. `L:'.  Next, the executable modules are copied, and finally changes are
  211. (carefully!) made to `DEVS:MountList' and `S:Startup-Sequence' so that
  212. Sili(CON:) is started automatically when the system starts.  You needn't
  213. permit the last step (or in fact any of the others) if you don't want it.
  214.  
  215. The installation process is managed by an Xicon script.  The "Install
  216. SiliCon" icon is actually attached to a directory of that name, rather than
  217. directly to a script; the main script is actually `.script' within that
  218. directory; it in turn uses sub-scripts within the `.work_scripts'
  219. subdirectory to do the pieces of the job.  All the modules that will be
  220. copied to your disk during installation are also in the `Install SiliCon'
  221. directory, except that the User scripts are in an `S' subdirectory of this
  222. (and the licensed modules if present are in their own subdirectory too).
  223.  
  224.  
  225. ppipc.library:
  226.  
  227. This module must be installed in the `LIBS:' directory for normal use of
  228. Sili(CON:). (For the trial installation, a judicious temporary switching of
  229. assignments avoids this.)  The original released version is still the
  230. current one, so that if you already have it installed you don't have to do
  231. it again.
  232.  
  233.  
  234. IP-Handler:
  235.  
  236. The `IP:' device is used to connect to shell processes, so this handler
  237. must be available in `L:' (and must be mounted -- see later).  The original
  238. release has a bug that could occasionally cause problems with Sili(CON:)
  239. (though not for other uses), so it should be replaced with this version.
  240. There are no differences in the two versions aside from the bug fix.
  241. If a version exists in L:, the program will show you the comparative
  242. directory entries, so you can decide whether you need to replace it.
  243. If for some reason there is absolutely no room in `L:', you could put the
  244. handler somewhere else, and modify the MountList entry yourself to match.
  245.  
  246.  
  247. SiliCon:
  248.  
  249. This is the main program that manages the user interface and history
  250. window.  You probably will want it in `C:' -- which is where the
  251. installation sequence will put it -- but you can place it anywhere that it
  252. is convenient for you to execute it from. (It will probably only be
  253. executed automatically by a suitable command in the startup sequence.)
  254.  
  255.  
  256. InShell:
  257.  
  258. This is executed to make the connection between a shell and Sili(CON:).
  259. It also should normally be in `C:', but can be anywhere on the standard
  260. path.  Note that if you wish, this program may be made resident; the
  261. installation sequence doesn't add any automatic instruction to do this,
  262. however.
  263.  
  264.  
  265. Scripts:
  266.  
  267. There are two scripts that will be put in the `S:' directory -- which, by
  268. the way, should be in your path, as is usually the case since DOS 1.3 was
  269. introduced.  These are `NewSili' and `Sili-Startup'.  If for some reason
  270. `S:' is not normally in your path, you can put NewSili in `C:' or anywhere
  271. else on the path.  Sili-Startup should, however, always be in `S:' -- it is
  272. always referred to directly, so it doesn't need to be in the path.  These
  273. two scripts are in the `S' subdirectory of the main installation directory.
  274.  
  275.  
  276. Extended modules:
  277.  
  278. If you have the licensed package, there are three more programs that the
  279. installation sequence will copy to `C:' -- `SiliConfig', `SiliDump', and
  280. `SiLink'.  These are simple utility programs that could be put anywhere
  281. else accessible that you prefer.
  282.  
  283.  
  284. MountList:
  285.  
  286. The `IP:' Handler must be mounted before Sili(CON:) is used, and so it must
  287. have an entry in `DEVS:MountList'.  The installation program looks for an
  288. appropriate entry there, and if it doesn't find one asks permission to
  289. insert it.  If allowed to it simply appends the entry to the current list.
  290. By the way, it is careful to do the modification on a copy!  The original
  291. MountList is then renamed as a backup BEFORE the copy is put in its place.
  292. If you prefer to make the change yourself, the necessary lines are in
  293. `IP_MountList' in the installation directory.
  294.  
  295.  
  296. Startup-Sequence:
  297.  
  298. There are two separate additions that the program will make to
  299. `S:Startup-Sequence' if so allowed.  First it inserts a `mount IP:' command
  300. to ensure that this device is available, and then adds automatic startup of
  301. Sili(CON:) and one connected shell before the `endcli'.  It first checks to
  302. see if such lines appear to have already been added, though, so that the
  303. file doesn't get modified twice.
  304.  
  305. There are some subtleties here that you should be aware of.  A 1.3 system
  306. often has the major part of the startup in `S:StartupII', rather than in
  307. the main sequence, so the program first checks for the existence of this
  308. and for other `mount' commands within it; if it is successful it will offer
  309. to put the new line there also.  If it doesn't find it, or is told not to,
  310. it will then request permission to modify Startup-Sequence itself; it will
  311. put the new line with other mounts if there are any, or otherwise after the
  312. LoadWB line; if it really gets lost it will give up and let you edit the
  313. file yourself.
  314.  
  315. The automatic startup text will be put immediately before the usual
  316. `endcli'.  Again, if the program can't find this it will pass the job on to
  317. you.  And of course once again all this editing is done on a copy, which
  318. only replaces the original after it is backed up.
  319.  
  320. If you allow all these steps, the next time you boot your machine,
  321. Sili(CON:) will be started automatically.
  322.  
  323.  
  324. startup:
  325.  
  326. Finally, the program asks if you want to start Sili(CON:) immediately.
  327. If you answer `Yes' it does essentially the same startup that would occur
  328. from the Startup-Sequence (except that the current directory is still the
  329. installation directory).
  330.  
  331.  
  332. Custom installation:
  333.  
  334. If you prefer not to use the automatic sequence, or for some reason you
  335. cannot in your machine, you can find all the pieces referred to above in
  336. the `Install SiliCon' directory, and copy them yourself to the appropriate
  337. places.  You will also have to know how to edit the MountList and Startup
  338. Sequence.  If you wish to do this, or to change anything in the default
  339. installation, please read the relevant sections of this manual first, and
  340. back things up before you change them.
  341.  
  342.  
  343.  
  344.  
  345.  
  346.  
  347. Starting Sili(CON:)
  348. ===================
  349.  
  350. Once you have all components properly installed, as detailed in
  351. `Installation', you need to do two things to begin using the program.
  352. First you need to start the control and history module, and then connect
  353. one or more Shell processes to it.  You will probably want to do both of
  354. these things either automatically from your startup sequence or at least
  355. from a script, but they can be done directly from a Shell window.  For
  356. clarity, this last alternative will be described first.
  357.  
  358. To start the control module, just give the (CLI or Shell) command:
  359.  
  360.         silicon
  361.  
  362. The control/history window will appear.  There is no need to use "RUN",
  363. because SiliCon immediately detaches itself and runs in the background.
  364. The SiliCon window does, however, become the active one, so for the next
  365. step you need to click in the Shell window to reactivate it.  (If you type
  366. commands into the SiliCon window at this point, nothing will happen because
  367. as yet no Shell is connected.)
  368.  
  369. If you want to connect the AmigaDOS Shell you are working in to SiliCon,
  370. use the command:
  371.  
  372.         inshell
  373.  
  374. This runs momentarily to make the connection between the Standard Input
  375. of the Shell and SiliCon and then exits, freeing the Shell for other
  376. commands.  (Do NOT use "RUN" here!)  From this point, the Shell will
  377. get its command input from one of SiliCon's channels; the channel name
  378. assigned by InShell appears in the SiliCon window title bar when the link
  379. is made, to indicate that commands will be directed there (until the
  380. channel is changed).  By the way, once linked, there is no way to break
  381. SiliCon's thrall except by killing the shell (`ENDCLI', or from the SiliCon
  382. `SHUT' menu).  The InShell command is described more fully in its own
  383. section.
  384.  
  385. If you do not want to link the currently running Shell or CLI to SiliCon
  386. (or if it is already linked and you want to open more channels), you can
  387. start another shell that is immediately linked to SiliCon by using the
  388. supplied shell startup script `Sili-Startup' (normally in the `S:'
  389. directory):
  390.  
  391.         newshell from s:sili-startup
  392.  
  393. This script simply executes InShell itself, and sets up some aliases and so
  394. on; edit it to suit your needs.
  395.  
  396. There is an executable script `NewSili' that conveniently performs the
  397. above command (with a default window specification).  Note that the
  398. supplied Sili-Startup redefines `NewSili' as an alias.  This is faster, but
  399. not as flexible (and of course doesn't work if Sili-Startup wasn't used for
  400. the current shell).  Whichever version is used, `NewSili' becomes the
  401. equivalent of `NewShell' for starting another Shell process that is
  402. controlled from SiliCon.
  403.  
  404. The most convenient way to start up SiliCon is from the Startup-Sequence
  405. at boot time, launching one or more linked Shells at the same time.  Simply
  406. include whatever versions of the above commands suit your needs immediately
  407. before the terminating EndCli in the S:Startup-Sequence file.  (You CAN
  408. replace the EndCli with an InShell, but it is probably not a good idea, as
  409. this initial window -- under 1.3 at any rate -- is a CLI, not a Shell, so
  410. you won't be getting the features that you would otherwise expect.)  This
  411. is the sort of thing:
  412.  
  413.         .....
  414.         .....
  415.         SiliCon
  416.         NewShell "NEWCON:0/0/300/200/Sili Shell" from S:Sili-Startup
  417.         endcli >NIL:
  418.  
  419. Some other things you may also want to do before the endcli.  If you have
  420. the full system you can invoke SiliConfig (not included with the Freely
  421. Distributable version) to dimension the control window and so on, and
  422. install some initial lines in the history for quick access.  You can even,
  423. in fact, copy lines into the history from a file if you only have the basic
  424. FD package, as explained in a later section, but you have fewer options
  425. that way.  Advanced users may even want to link in other utility processes
  426. that are not Shells (ARexx programs perhaps) -- again, the full system is
  427. needed for this.
  428.  
  429.  
  430.  
  431.  
  432.  
  433.  
  434. The Sili(CON:) Window
  435. =====================
  436.  
  437. Sili(CON:) opens just a single window, with a number of functional areas.
  438. At the bottom there is the Command Entry Line; any characters typed while
  439. the window is active will appear there.  The main area of the window above
  440. that is the History Display, showing the list of commands previously
  441. entered.  On the right is the scrollbar that lets you move directly to the
  442. point of interest in the history if it is off screen.
  443.  
  444. When first started (and at occasional times later) the title bar just says
  445. `Sili(CON:)', but most of the time it gives information on the channels
  446. currently selected.  See the later section on `Channels' for details.
  447.  
  448. The window has the usual front/back and sizing gadgets, and of course can
  449. be dragged by its title bar, but there is no `quit' gadget.  A menu item is
  450. used to close Sili(CON:) down.
  451.  
  452.  
  453. Activating the Window
  454. =====================
  455.  
  456. An important feature of Sili(CON:) is that there is a `hot key' combination
  457. that will activate the window immediately, whatever else the Amiga is doing
  458. at the time.  Hold down the LEFT Amiga key and type the return key, and the
  459. control window will be brought to the front of the Workbench screen and
  460. activated.  (Note well that this key combination ALWAYS activates
  461. Sili(CON:), whatever screen is active at the time, but it does NOT bring
  462. the Workbench screen to the front.  You can type `blind' if you wish after
  463. doing this, but it is probably wiser not to!  Note also that there is an
  464. apparent Intuition glitch that very occasionally prevents the window from
  465. coming to the front when activated; if this happens, it WILL come to the
  466. front when the return key is next pressed; if you are worried about
  467. possible accidental execution of a command, use shift-return to prevent
  468. this.)
  469.  
  470.  
  471.  
  472.  
  473.  
  474.  
  475. Using Sili(CON:)
  476. ================
  477.  
  478. Once you have started Sili(CON:) you will normally leave it running
  479. continuously until you shut the machine off -- although you can remove it
  480. with the `QUIT' menu item if you so wish.  Usage is mostly just a matter of
  481. typing commands into its entry line or selecting previous ones from its
  482. history area for re-execution.  Freshly entered commands are transmitted
  483. out the currently selected channel; re-executed ones go to the channel they
  484. were originally associated with, unless you specify otherwise.
  485.  
  486. In general, the destination of a command is a perfectly standard AmigaDOS
  487. shell, so all the facilities it provides (such as aliases, command
  488. redirection, and directly executable scripts) are available as usual.
  489. The only real difference is that if you want to open a new shell connected
  490. to Sili(CON:) you should use `NewSili' rather than `NewShell' (see below).
  491.  
  492. A command is actually transmitted when the return key is typed.  Sili(CON:)
  493. normally remains active after transmission, so you can immediately continue
  494. entering further commands.  However, if you execute a command with the
  495. Right-Amiga key held down as you type return, keyboard activity is
  496. transferred to the shell window itself (see below for more details).  This
  497. lets you control output with the space bar, for instance.  If you want to
  498. interact with the program itself in the shell window, rather than through
  499. Sili(CON:), you should redirect its input in the command line.  See
  500. `Keyboard Input to Programs' for details.
  501.  
  502. You can change the current channel -- to transmit to any of the connected
  503. Shells -- via either menu selection or keyboard.  Other actions you can
  504. select from either menu or keyboard include gathering all the commands
  505. associated with the current channel at the front of the list, wiping all
  506. the commands on that channel from the history, changing a command to a
  507. different channel, or fixing the channel temporarily so that all commands
  508. are directed there, whatever their original destination.  From the menu
  509. only, you can shut down a channel (and close its Shell) when you are done
  510. with it; you can also flush all the shut channels (i.e. remove them from
  511. the menu and discard their command lines) or quit Sili(CON:) entirely --
  512. shutting down all its associated shells as well.  (see `Menu Operations'.)
  513.  
  514. New Shell processes are created for Sili(CON:) in an analogous fashion to
  515. the AmigaDOS `NewShell' command.  In this case the command is `NewSili'.
  516. This is in fact either a script or an alias and does not have NewShell's
  517. options, but you can easily tailor it to your needs (or create
  518. alternatives).  See the section below on `NewSili'.
  519.  
  520.  
  521.  
  522.  
  523.  
  524.  
  525.  
  526. Entering commands:
  527. ==================
  528.  
  529. While the Sili(CON:) window is the active one, characters typed at the
  530. keyboard go straight into the Command Entry Line at the bottom of the
  531. window. The return key is used to actually execute the command (or more
  532. precisely transmit it to the shell on the current channel for execution).
  533.  
  534. A number of special keys and control characters are also active to give you
  535. convenient editing amd other controls:
  536.  
  537.         left-arrow                  move cursor one character left
  538.         right-arrow                 move cursor one character right
  539.         shift-left-arrow            move cursor to beginning of text
  540.         shift-right-arrow           move cursor to end of text
  541.         ctrl-left-arrow             move cursor left to next space
  542.         ctrl-right-arrow            move cursor right to next space
  543.         ctrl-K                      erase from cursor to end of line
  544.         ctrl-U                      erase from before cursor to start of line
  545.         ctrl-X                      erase whole line
  546.         R.Amiga-Q                   restore initial contents of line
  547.                                        (only on lines from history)
  548.         up and down arrows          move through the history -- see later
  549.                                     (the current edited line is NOT
  550.                                     preserved -- be careful!)
  551.  
  552.         return                      transmits command for execution
  553.         shift-return                enters command in history only
  554.                                     -- does NOT transmit it
  555.         alt-return                  transmits command, but adds it to
  556.                                     the history as a "floating command"
  557.                                     not associated with any channel
  558.                                     (see the section on `Channels')
  559.         Right_Amiga-return          as return, but pushes the Sili(CON:)
  560.                                     window to the back and activates the
  561.                                     shell window that the command is sent
  562.                                     to.
  563.  
  564.     Note that the Right_Amiga modifier remains associated with that command
  565.     line: the Sili(CON:) window will be deactivated (and the shell window
  566.     activated) each time that command is reinvoked.
  567.  
  568.     The above modifiers for the return key may be combined if you wish, and
  569.     will usually do something rational.  Thus:
  570.  
  571.         shift-alt-return            enters command in history only
  572.                                     as a "floating" one.
  573.         R_Amiga-shift-return        command to history only, and Sili(CON:)
  574.                                     remains active, but the `background'
  575.                                     modifier gets asociated with the
  576.                                     command, and will take effect on future
  577.                                     invocations.
  578.  
  579. Other special keys, such as menu shortcut commands, are described in their
  580. own sections.
  581.  
  582.  
  583.  
  584.  
  585.  
  586.  
  587.  
  588. The History List
  589. ================
  590.  
  591. Each new command typed into Sili(CON:) goes into the History as it is
  592. transmitted (or even without transmission, as described under `Entering
  593. Commands').  It can be retrieved from there when needed, for immediate
  594. re-execution or re-editing.  Re-executed commands are NOT added again to
  595. the list, though re-edited ones are.  You can access the history either
  596. through mouse or keyboard.
  597.  
  598. At the left of each line in the history is a space for a marker that
  599. indicates something about the channel associated with that command. All the
  600. commands that are associated with the `selected' channel -- i.e. the
  601. channel of the currently selected command, or the default channel if there
  602. is no selected command -- show a `bullet within a rectangle' mark.
  603. Commands belonging to the `default' channel, if this is different from the
  604. selected channel, show a `bullet' only.  `Floating' commands, that always
  605. go to the current default channel, will show a rectangle only at all times.
  606. Commands associated with other channels have no marker.
  607.  
  608. You can select a particular command and bring it back to the entry line
  609. simply by clicking once on it with the mouse left button.  If it is not
  610. visible in the window, you can scroll through the entire history with the
  611. scrollbar on the right of the window.  (Note that this will be a reasonably
  612. smooth scroll if the window is the frontmost one known to Intuition; if it
  613. is not, the scroll flickers rather more.  If this annoys you, click on the
  614. "to-front" gadget, or use the Left_Amiga-return combination.)  A selected
  615. command is highlighted, and remains so as long as it is the selected one.
  616. Only one line may be selected at a time; executing any command -- from the
  617. history or keyed in -- unselects all lines.
  618.  
  619. If you want to execute the command immediately, rather than bring it back
  620. for editing, double-click on that line in the history area.  (You can't
  621. execute a command by clicking in the entry line area -- you must use the
  622. return key in that case.)
  623.  
  624. You can step through the history with the up and down arrow keys if you
  625. prefer (while the window is active, of course).  If the step would take you
  626. out of the currently visible area, the text will scroll to compensate.
  627.  
  628. The list is not immutable as displayed.  In a sense it is not a true
  629. "History" as seen in other situations (the Shell for example), because it
  630. is not an exact and complete record of all the commands in the order they
  631. were given.  For a start, commands executed unchanged from the history are
  632. not re-entered: only new or edited ones go in.  Further, you can delete
  633. unwanted lines from the set; this helps to avoid clutter, and guards you
  634. from choosing a badly entered one accidentally.  To delete a line, first
  635. select it -- by mouse click or with the up/down arrows -- and then type
  636. Right_Amiga-Del.  You can delete a set of adjacent lines backwards through
  637. the list by repeating that key combination an appropriate number of times.
  638.  
  639. You have other manipulations available to you as well, both from the menu
  640. and by keyboard shortcut command.  You can wipe (delete) all the lines
  641. associated with the current default channel, or gather them at the front of
  642. the list.  See `Menu Operations' for details.
  643.  
  644. The default maximum number of entries in the history is 50; when that
  645. number is exceeded, the oldest entries are discarded.  Using the SiliConfig
  646. module (from the full package) you can reset this to any desired value.
  647.  
  648.  
  649.  
  650.  
  651.  
  652. Channels
  653. ========
  654.  
  655. When you enter a command to Sili(CON:) it is sent out through a "Channel"
  656. to the desired shell (or other) process.  Each connected process has its
  657. own channel, and each channel has its own name and its own item in the
  658. `Channel' menu tagged with that name.  When a new channel is connected
  659. (`opened') it is added at the bottom of the menu list.  It may later be
  660. `shut', in which case its menu item is disabled, and after that may be
  661. completely `flushed', at which point the item is removed from the menu.
  662. (See `Menu Operations'.)
  663.  
  664. A channel name may be any appropriate string of characters, and is
  665. determined by the connecting process at the time the connection is made.
  666. The program that links a shell to a channel -- `InShell' -- will accept a
  667. command line argument for this if the user provides one; otherwise it
  668. generates a default one of the form `CLI_n', where `n' is the AmigaDOS
  669. CLI-Process number.
  670.  
  671. At any time, one of the channels is Sili(CON:)'s `Selected Default
  672. Channel'.  There is also a `Current Channel', which is the channel that the
  673. current command will actually be sent out on; for new commands this is just
  674. the default; for a reselected one it is the channel associated with it in
  675. the history.
  676.  
  677. You select a particular channel to be the default by picking it from the
  678. `Channel' menu, or with one of the shortcut key combinations
  679. `Right_Amiga_1', `Right_Amiga_2',... `Right_Amiga_9'.  These key
  680. combinations correspond IN ORDER to the items in the channel menu, but bear
  681. well in mind that there is no FIXED relation between the items and the
  682. keys, because items may be added and deleted at any time (as channels are
  683. opened and discarded).  However there is little difficulty, as you get
  684. immediate feedback from the titlebar (see below).
  685.  
  686. It is possible for NO channel to be the current default (when no shells
  687. have yet been linked, when the default channel has been flushed, or when
  688. you deliberately select `NO Channel'); in this case new commands don't get
  689. sent anywhere except into the history, where they become `floating'
  690. commands (see below).
  691.  
  692. When a channel is shut, its commands don't disappear from the history
  693. unless it is actually flushed as well.  Invoking a command for a shut
  694. channel does nothing at all.  If the same channel is later opened again,
  695. the commands once again become active.  (Note: in the current version,
  696. although a shut channel has its menu item disabled, you can still select it
  697. from the keyboard!  Also, if it was the default channel at the time it
  698. was shut it remains so.  This does no harm, but might confuse you.)
  699.  
  700. The title bar of the Sili(CON:) window shows both the Current Channel (the
  701. leftmost), and the Selected Default (within brackets).  If there is no
  702. current channel (i.e. there is neither a default nor one from a currently
  703. selected command) it will just show `Sili(CON:)'.  If there is a current
  704. channel but no default, the brackets will be empty.
  705.  
  706. A marker on the left of each history line indicates whether that line is
  707. associated with the current channel, the default channel, or is floating;
  708. see the section on `History' for details.  This, together with the
  709. titlebar, gives you a convenient way of checking the association of
  710. commands with channels and with each other.  You can see at a glance which
  711. commands will go to the current channel, and which to the default.  By
  712. clicking on a particular line, you immediately see all the other commands
  713. linked to the same channel.
  714.  
  715. A newly typed command is normally associated with the current default, and
  716. remains associated with it in the history unless later changed with a `Set
  717. to Channel' operation.  The only exceptions to this are if the alt-return
  718. key combination is used to end the command, in which case it is entered as
  719. floating, or a previously entered command is edited, in which case it
  720. retains the channel of the original command.  This last may be overridden
  721. by selecting a new default channel sometime AFTER the original command has
  722. been selected, but before the terminating return; this sequence will also
  723. temporarily redirect an unedited command to the default channel, but does
  724. not change the association in the history.
  725.  
  726. A `floating' command line in the history is not associated with any
  727. particular channel.  It will be always go out the current default channel
  728. when invoked.  This is often useful for preventing multiple copies of
  729. commonly used commands (such as DIR) littering the history area.  A
  730. floating line can be entered either with the alt-return combination
  731. mentioned or by entering it when there is no current default channel. The
  732. `Set to Channel' operation may also be used (with no default) to make a
  733. previously entered line floating.
  734.  
  735. For completeness it should be pointed out that channels are actually just
  736. (ppIPC) IPCPorts passing messages with IDs suitable for an `IP:' device
  737. data stream.  Hence any program that takes serial input (at least as long
  738. as it doesn't need raw console keystrokes) can be linked to a channel via
  739. an IP-device `pipe', or specially-written programs can even connect to a
  740. channel port directly.  However, to complete the connection, Sili(CON:) has
  741. to be requested to open that channel; for a shell, this is done automatically
  742. by the linking program InShell, but a suitable message has to be sent in
  743. other cases; another utility `SiLink' is available with the full package to
  744. do this.
  745.  
  746. `Shutting' a channel is slightly more complex than it might at first
  747. appear.  Just as Sili(CON:) only opens a channel when it is requested to do
  748. so by a message, so it only actually shuts it (disables its menu item)
  749. when it receives a message requesting this; such a message is normally sent
  750. by the connection that is shutting down.  Selecting a channel from the
  751. `SHUT:' menu simply sends a closedown request to the channel; it is up to
  752. the channel itself to send the `SHUT' message in return before actually
  753. going away.  A shell connection will always do this, but a channel opened
  754. by `SiLink' for example may not.
  755.  
  756. Whether the menu item is disabled or not, however, has no direct bearing on
  757. whether the channel is flushable.  A channel may be flushed only when there
  758. are no other connections remaining to it.  In normal use, when a channel
  759. has been opened by InShell, the menu item is disabled at the same time as
  760. the connection is closed, so there is no confusion.  If you have connected
  761. a channel via SiLink, however, you may need to be aware of the distinction.
  762.  
  763. Sili(CON:) WILL disable the channel menu item if you send a shut request
  764. from the menu and it finds that the channel is already actually closed.
  765. SiLink -- if you are using that -- has a SHUT option to send the
  766. appropriate message, from a closedown script for example.
  767.  
  768.  
  769.  
  770.  
  771.  
  772. Menu Operations
  773. ===============
  774.  
  775. Sili(CON:) has four menu lists, positioned along the menu bar in a way that
  776. should make them most convenient for most users, at least when the History
  777. window is close to its default position.  At the far left is the `Sili(CON:)'
  778. menu, only used for quitting the program and flushing shut channels.  Next
  779. to it is the `SHUT:' menu, used for closing down individual channels.
  780. On the right, above the normal position of the window, are the `Actions:'
  781. and `Channel' menus.
  782.  
  783. The `Channel' and `SHUT:' menus contain the same list of currently known
  784. channel names -- ghosted (disabled) if they have been shut.  Selecting an
  785. item from the `Channel' menu makes this the default channel to which new
  786. commands will be sent and on which most actions are performed.
  787.  
  788. Selecting from the `SHUT:' menu sends a closedown message out that channel;
  789. if it is connected to a shell, an ENDCLI will be issued, the shell window
  790. will close, and Sili(CON:) will disable that channel; if it is some other
  791. program the result may be different -- in particular the menu item may NOT
  792. get disabled.  For more on this see the `Channels' section.  Nothing
  793. happens to the command lines in the history for that channel at this point,
  794. nor does the default channel change if it happens to be the one that is
  795. shut.
  796.  
  797. The `Actions:' menu contains a number of possible operations on the history
  798. list and channels:
  799.  
  800.         `Gather Channel'    -- collects all the history lines pertaining
  801.                             to the current default channel at the front of
  802.                             the history; their order is otherwise unchanged.
  803.  
  804.         `Wipe Channel'      -- deletes all the history lines pertaining
  805.                             to the current default channel.
  806.  
  807.         `Fix Channel'       -- forces ALL commands -- whether newly entered
  808.                             or selected from the history -- to be sent out
  809.                             the current default channel.  This coercion
  810.                             remains in effect until another selection is
  811.                             made from the Channel menu (this may be a
  812.                             reselection of the same channel if you wish).
  813.                             It has no effect on the associations in the
  814.                             history, which will resume when the coercion
  815.                             is ended.  You are reminded that this is in
  816.                             effect by there being no default (bracketed)
  817.                             channel shown in the title bar.
  818.  
  819.         `Set to Channel'    -- functional only when a history line is
  820.                             currently selected: changes the association of
  821.                             that command to the current default channel.
  822.  
  823.         `NO Channel'        -- sets the current default channel to null;
  824.                             as well as making any newly entered commands
  825.                             floating, this allows you to use the `Gather',
  826.                             `Wipe', and `Set' operations on all the
  827.                             floating history lines.
  828.  
  829. The `Sili(CON:)' menu has only two entries (separated by a blank space for
  830. safety):
  831.  
  832.         `Flush Channels'    -- removes ALL unconnected channels completely
  833.                             from Sili(CON:)'s control.  The associated
  834.                             lines are wiped from the history, and the
  835.                             channel names are removed from the menus.  Note
  836.                             that there is no way of removing a channel
  837.                             completely while there are other processes
  838.                             connected to the port.
  839.  
  840.         `QUIT'              -- closes down Sili(CON:) completely.  All
  841.                             channels and their associated shells are
  842.                             closed, and the history discarded.
  843.  
  844. The `Actions:' and `Channel' menus have equivalent keyboard shortcut
  845. commands; the less commonly used (and more protected) `Sili(CON:)' and
  846. `SHUT:' menus don't.  For `Actions:', the key equivalent is the Right_Amiga
  847. key combined with the initial letter of the item, except for `NO Channel'
  848. which uses `Right_Amiga-0' (zero) by analogy with the channel selection
  849. shortcuts.  The combinations `Right_Amiga_1' through `Right_Amiga_9' are
  850. associated with the corresponding lines in the `Channel' menu.  It would be
  851. possible (though rare) to have more than nine channels open, in which case
  852. the later ones would only be accessible from the menu.
  853.  
  854.  
  855.  
  856.  
  857.  
  858.  
  859. NewSili and Sili-Startup
  860. ========================
  861.  
  862. In the same way that you would type `NewShell' to open a new `standalone'
  863. shell window, you use `NewSili' to open a new shell connected to
  864. Sili(CON:).  This is actually a single name for a couple of different
  865. mechanisms.  There is a short script -- expected to be in `S:' -- that will
  866. do the job, but once you are running from a shell started in this way, it
  867. will normally be an alias created by the startup script.
  868.  
  869. Whichever of these NewSili is, it simply performs the command
  870.  
  871.             newshell from S:Sili-Startup
  872.  
  873. Sili-Startup is a short script, analogous to `Shell-Startup' for a standard
  874. shell except that it MUST contain the `InShell' command line that actually
  875. makes the link to Sili(CON:).  The version supplied with this package can
  876. simply be regarded as a base from which to tailor your own.
  877.  
  878. If your shells are virtually always connected to Sili(CON:), you may prefer
  879. to add `InShell' directly to `S:Shell-Startup'.  In that case, the
  880. `NewShell' command will make the connection itself if Sili(CON:) is
  881. running.  (If it is not, the shell would continue as normal.)
  882.  
  883. Remember that the instant a new shell is started up, that window
  884. momentarily becomes the active one (as always with a new shell), and
  885. Sili(CON:) doesn't regain control until the InShell is executed.  You
  886. should avoid typing anything in this short interval so that you don't get
  887. unwanted characters (and blocked output!) in the new window.
  888.  
  889. Note that as supplied both NewSili and Sili-Startup refer to the `CON:'
  890. device, rather than the `NEWCON:' that would be slightly preferable under
  891. 1.3 (in case you should ever want to make use of the Console Device history
  892. as well).  This is very seldom needed, and the NEWCON device is not
  893. recognized under 2.0, so to avoid having different versions for the two
  894. systems the basic `CON:' has been used.  If you are running under 1.3 and
  895. you wish to change it, please do so.
  896.  
  897.  
  898.  
  899.  
  900.  
  901. InShell -- Shell Linking Module
  902. ===============================
  903.  
  904. A standard AmigaDOS Shell or CLI, once running, is connected to Sili(CON:)
  905. by invoking the program `InShell' (either directly or through a startup
  906. mechanism such as NewSili). This opens a new `IP:' device channel, connects
  907. it to the Standard Input of the shell, and informs Sili(CON:) that it is to
  908. open (and switch to) that same channel.  It also ensures that the device is
  909. set up to close down the shell and its I/O properly when eventually
  910. requested to do so.  It then exits, leaving the shell free to accept
  911. commands on its new input channel.
  912.  
  913. If InShell is executed without any command line argument, it forms a name
  914. for the new channel by appending the number of the CLI process (assigned by
  915. AmigaDOS) to the prefix `CLI_', so that each channel has a unique name.
  916.  
  917. If you are starting up a new shell for a particular purpose (working on a
  918. project, perhaps) you may want to have a more specific name for the
  919. channel.  To do this, simply provide the desired name as a command line
  920. argument, like:
  921.  
  922.             inshell "my project"
  923.  
  924. You will probably want to do this from a script (similar to Sili-Startup
  925. invoked by NewSili) that does any other initialization required for the
  926. project at the same time.  You can then start it as:
  927.  
  928.             newshell from my-startup
  929.  
  930. or simply create a script or alias (like NewSili) to do the job.
  931.  
  932. Because InShell must be run in the newly started Shell, there is no easy
  933. direct way to pass it an argument from the process in which the actual
  934. `NewShell' is issued.  This can be done with pipes (IP or standard) or even
  935. via a temporary file, but is cumbersome.  It doesn't seem worth including
  936. examples; experiment if you feel like it.
  937.  
  938. The first time InShell is run after Sili(CON:) has started, it displays the
  939. version number of Sili(CON:), and probably a little advertising message (!).
  940. Thereafter, only a short identification is displayed.
  941.  
  942. InShell may be installed as a Resident command, if you wish, to speed up
  943. its action somewhat. (For a description of the RESIDENT command see your
  944. Amiga documentation.)
  945.  
  946.  
  947.  
  948.  
  949.  
  950. Keyboard Input to Programs
  951. ==========================
  952.  
  953. When Sili(CON:) is connected to a Shell process, it becomes the normal
  954. Standard Input for that process, and therefore for all the programs run
  955. under it.  This is often convenient, as it makes for a uniform keyboard
  956. input mechanism.  However there are cases in which you might rather
  957. interact with the program in the shell window itself, and if the program
  958. happens to need RAW keyboard input (as opposed to the more usual
  959. line-by-line mode) it MUST come from that window.
  960.  
  961. It is easy to arrange this, because Sili(CON:) does not affect the Console
  962. Device for that window at all, and the special command line character `*'
  963. will refer to this in the usual way.  Simply include the input redirection
  964. argument `<*' in the command line immediately after the command name
  965. itself and the program will take its input from the window rather than
  966. Sili(CON:).
  967.  
  968. So to run the standard DOS program `more' (which does expect raw input)
  969. from Sili(CON:), you can use:
  970.  
  971.             more <* mytext
  972.  
  973. If you do use such redirection, you will usually also want to transmit the
  974. command with the Right_Amiga-return combination (see `Command Entry'), so
  975. that the shell window is immediately activated for input.  This code
  976. becomes associated with that command in the history, and the window
  977. activates again each time the command is reinvoked. (You can also give the
  978. Right_Amiga-return afterwards, of course, but it then is not associated
  979. with the command.)
  980.  
  981. Unless the program being run does require raw keystrokes, there is usually
  982. no need for redirection.  Sili(CON:) passes on the attention characters
  983. `control-C;, `-D', `-E', and `-F' directly to the currently selected Shell
  984. process. It also will pass on an end-of-file (`control-\') and a `lone'
  985. return (even though this is not added to the history).
  986.  
  987. One thing Sili(CON:) does not provide is any direct way to pause scrolling
  988. in the shell window.  If you are expecting this to be necessary, it is wise
  989. to again use Right_Amiga-return as the command terminator, so you get
  990. immediate access to the window and can pause scrolling with the spacebar
  991. as usual.
  992.  
  993.  
  994.  
  995.  
  996.  
  997. The `Sili(CON:)' Input Port
  998. ===========================
  999.  
  1000. As has been mentioned in passing several times, Sili(CON:) uses the ppIPC
  1001. communication mechanism for interacting with other processes.  Not only
  1002. does it send commands to the channels it is connected to, but it receives
  1003. information and commands of its own on an IPCPort named `Sili(CON:)'.
  1004. (If you are addressing this port, be sure you use EXACTLY the characters
  1005. within the quotes (but not the quotes themselves); case is important, too.)
  1006.  
  1007. InShell and SiLink open new channels by sending messages to this port,
  1008. and SiliConfig and SiliDump send their instructions and requests there.
  1009. The exact protocol of these messages is detailed in an Appendix to the
  1010. printed manual.
  1011.  
  1012. One thing it may be useful to know, however, is that it can receive lines
  1013. of text in the same form as it sends out as commands, and the same as the
  1014. `IP:' device receives and transmits.  Incoming lines are added directly to
  1015. the history (attached to the currently selected channel).
  1016.  
  1017. It is therefore easy -- even without SiliConfig from the full package --
  1018. to load Sili(CON:) with a convenient set of commands, at start up time
  1019. or later.  Create a file of the desired commands, one to a line.  Then copy
  1020. this (at start up time or later) to the history display with the command:
  1021.  
  1022.             type >IP:Sili(CON:) cmdfile
  1023.  
  1024. You may find this useful even if you have SiliConfig available, because the
  1025. current version of this always specifies the channel that each entered line
  1026. is to be associated with.  If you prefer to have the commands loaded into
  1027. the current default channel, whatever that may be, you may want to use this
  1028. mechanism.  If you do this often, you may even want to define an alias such
  1029. as:
  1030.  
  1031.             alias get type >IP:Sili(CON:) []
  1032.  
  1033.  
  1034.  
  1035.  
  1036.  
  1037.  
  1038.  
  1039. Distribution of this Program
  1040. ============================
  1041.  
  1042. Sili(CON:) is not public domain.  The `Sili(CON:)' program, its associated
  1043. modules, and manual are copyrighted -- All Rights Reserved.
  1044.  
  1045. Sili(CON:) is distributed as ShareWare.  If you find it useful, please
  1046. send a license fee of $25 (US) to:
  1047.  
  1048.             Pete Goodeve
  1049.             3012 Deakin Street #D
  1050.             Berkeley, CA 94705
  1051.             USA
  1052.  
  1053. (Preferably use the `reg_form' included as a file in this directory, or an
  1054. approximate copy of it.)   In return you will receive a complete version of
  1055. the system (including all the ancillary utility modules omitted from this
  1056. Freely Distributable version) and a 40-page printed manual.
  1057.  
  1058. This version may be distributed without restriction as long as no charge
  1059. other than a reasonable disk duplication fee is made.  The Licensed version
  1060. provided for the $25 fee is licensed to one user only, and is not
  1061. distributable.
  1062.  
  1063. Please do not use this program without paying for it.  Every effort has
  1064. been made to produce a useful, bug-free product and documentation, and this
  1065. hasn't been cheap on my time!  Thanks for respecting the ShareWare Ethic!
  1066.  
  1067.                                         Pete Goodeve
  1068.  
  1069.                                         June 1991
  1070.  
  1071.                         --------------------------
  1072.  
  1073.  
  1074.